/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyecto1;

import java.io.Serializable;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Maria Fernanda Martinez, Adrian Martinez
 */
@Entity
@Table(name = "libros")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Libros.findAll", query = "SELECT l FROM Libros l"),
    @NamedQuery(name = "Libros.findByAutor", query = "SELECT l FROM Libros l WHERE l.autor = :autor"),
    @NamedQuery(name = "Libros.findByEdicion", query = "SELECT l FROM Libros l WHERE l.edicion = :edicion"),
    @NamedQuery(name = "Libros.findByNombre", query = "SELECT l FROM Libros l WHERE l.nombre = :nombre"),
    @NamedQuery(name = "Libros.findByAnio", query = "SELECT l FROM Libros l WHERE l.anio = :anio"),
    @NamedQuery(name = "Libros.findByEstado", query = "SELECT l FROM Libros l WHERE l.estado = :estado"),
    @NamedQuery(name = "Libros.findByPrecio", query = "SELECT l FROM Libros l WHERE l.precio = :precio"),
    @NamedQuery(name = "Libros.findByCurso", query = "SELECT l FROM Libros l WHERE l.curso = :curso"),
    @NamedQuery(name = "Libros.findByProfesor", query = "SELECT l FROM Libros l WHERE l.profesor = :profesor"),
    @NamedQuery(name = "Libros.findByCorreo", query = "SELECT l FROM Libros l WHERE l.correo = :correo")})

public class Libros implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "autor")
    private String autor;
    @Column(name = "edicion")
    private Short edicion;
    @Size(max = 30)
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "anio")
    private Short anio;
    @Size(max = 10)
    @Column(name = "estado")
    private String estado;
    @Column(name = "precio")
    private Short precio;
    @Size(max = 25)
    @Column(name = "curso")
    private String curso;
    @Size(max = 25)
    @Column(name = "profesor")
    private String profesor;
    @Size(max = 30)
    @Column(name = "correo")
    private String correo;

    /**
     * Nombre: Libros
     * Descripción: constructor de Libros
     * No tiene parámetros ni valor de retorno
     */
    public Libros() {
    }

    /**
     * Nombre: Libros
     * Descripción: constructor de Libros, asigna el valor del primary key
     * No tiene valor de retorno
     * Pre: existe autor
     * Port: primary key creada
     * @param autor
     */
    public Libros(String autor) {
        this.autor = autor;
    }

    /**
     * Nombre: getAutor
     * Descripción: obtener el contenido de autor
     * No tiene parámtros ni post.
     * Pre: existe autor
     * @return autor de tipo String
     */
    public String getAutor() {
        return autor;
    }

    /**
     * Nombre: setAutor
     * Descripción: establece el valor de autor
     * No tiene valor de retorno
     * Pre: existe autor
     * Post: autor tiene un valor específico
     * @param autor
     */
    public void setAutor(String autor) {
        this.autor = autor;
    }

    /**
     * Nombre: getEdicion
     * Descripción: obtener el contenido de edicion
     * No tiene parámtros ni post.
     * Pre: existe edicion
     * @return edicion de tipo Short
     */
    public Short getEdicion() {
        return edicion;
    }

    /**
     * Nombre: setEdicion
     * Descripción: establece el valor de edicion
     * No tiene valor de retorno
     * Pre: existe edicion
     * Post: edicion tiene un valor específico
     * @param edicion
     */
    public void setEdicion(Short edicion) {
        this.edicion = edicion;
    }

    /**
     * Nombre: getNombre
     * Descripción: obtener el contenido de nombre
     * No tiene parámtros ni post.
     * Pre: existe nombre
     * @return nombre de tipo String
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Nombre: setNombre
     * Descripción: establece el valor de nombre
     * No tiene valor de retorno
     * Pre: existe nombre
     * Post: nombre tiene un valor específico
     * @param nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Nombre: getAnio
     * Descripción: obtener el contenido de anio
     * No tiene parámtros ni post.
     * Pre: existe anio
     * @return anio de tipo Short
     */
    public Short getAnio() {
        return anio;
    }

    /**
     * Nombre: setAnio
     * Descripción: establece el valor de anio
     * No tiene valor de retorno
     * Pre: existe anio
     * Post: anio tiene un valor específico
     * @param anio
     */
    public void setAnio(Short anio) {
        this.anio = anio;
    }

    /**
     * Nombre: getEstado
     * Descripción: obtener el contenido de estado
     * No tiene parámtros ni post.
     * Pre: existe estado
     * @return estado de tipo String
     */
    public String getEstado() {
        return estado;
    }

    /**
     * Nombre: setEstado
     * Descripción: establece el valor de estado
     * No tiene valor de retorno
     * Pre: existe estado
     * Post: estado tiene un valor específico
     * @param estado
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

    /**
     * Nombre: getPrecio
     * Descripción: obtener el contenido de precio
     * No tiene parámtros ni post.
     * Pre: existe precio
     * @return precio de tipo Short
     */
    public Short getPrecio() {
        return precio;
    }

    /**
     * Nombre: setPrecio
     * Descripción: establece el valor de precio
     * No tiene valor de retorno
     * Pre: existe precio
     * Post: precio tiene un valor específico
     * @param precio
     */
    public void setPrecio(Short precio) {
        this.precio = precio;
    }

    /**
     * Nombre: getCurso
     * Descripción: obtener el contenido de curso
     * No tiene parámtros ni post.
     * Pre: existe curso
     * @return curso de tipo String
     */
    public String getCurso() {
        return curso;
    }

    /**
     * Nombre: setCurso
     * Descripción: establece el valor de curso
     * No tiene valor de retorno
     * Pre: existe curso
     * Post: curso tiene un valor específico
     * @param curso
     */
    public void setCurso(String curso) {
        this.curso = curso;
    }

    /**
     * Nombre: getProfesor
     * Descripción: obtener el contenido de profesor
     * No tiene parámtros ni post.
     * Pre: existe profesor
     * @return profesor de tipo String
     */
    public String getProfesor() {
        return profesor;
    }

    /**
     * Nombre: setProfesor
     * Descripción: establece el valor de profesor
     * No tiene valor de retorno
     * Pre: existe profesor
     * Post: profesor tiene un valor específico
     * @param profesor
     */
    public void setProfesor(String profesor) {
        this.profesor = profesor;
    }

    /**
     * Nombre: getCorreo
     * Descripción: obtener el contenido de correo
     * No tiene parámtros ni post.
     * Pre: existe correo
     * @return correo de tipo String
     */
    public String getCorreo() {
        return correo;
    }

    /**
     * Nombre: setCorreo
     * Descripción: establece el valor de correo
     * No tiene valor de retorno
     * Pre: existe correo
     * Post: correo tiene un valor específico
     * @param correo
     */
    public void setCorreo(String correo) {
        this.correo = correo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (autor != null ? autor.hashCode() : 0);
        return hash;
    }

    /**
     * Nombre: equals
     * Descripción: revisa si existe alguna instancia de Libros y que su primary key sea única
     * Parámetro: object
     * Valor de retorno: boolean
     * Pre: existe o no alguna instancia de libros; existe algún autor
     * Post: no hay
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Libros)) {
            return false;
        }
        Libros other = (Libros) object;
        if ((this.autor == null && other.autor != null) || (this.autor != null && !this.autor.equals(other.autor))) {
            return false;
        }
        return true;
    }

    /**
     * Nombre: toString
     * Descripción: generar una cadena con el autor, es decir, la primary key
     * No tiene parámetros no post
     * Valor de retorno: String
     * Pre: existe autor
     */
    @Override
    public String toString() {
        return "proyecto1.Libros[ autor=" + autor + " ]";
    }
    
}
